//
//  ZHHttpDownloadService.h
//  Pod
//
//  Created by chun.chen on 2018/7/17.
//  Copyright © 2018年 cc. All rights reserved.
//  文件下载services

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface ZHHttpDownloadService : NSObject

#pragma mark - system
/**
 单例

 @return return value description
 */
+ (instancetype)service;

/**
 单例，适配swift

 @return  返回单例对象，
 */
+ (instancetype)sharedInstance;

#pragma mark - 下载

/**
 下载文件
 
 @param url 文件链接地址
 @param fileExtension 指定的文件扩展名，方便下载完存储，例如"txt"，默认nil
 @param tempDownloadPath 外界传入的本地保存下载数据的路径，若是默认保存路径，直接传入nil或者@"" 空字符串
 @param progressBlock 下载进度回调
 @param completionBlock 下载完成回调
 @return return value description
 */
- (NSURLSessionDownloadTask *_Nullable)downloadFileWithURL:(NSString *_Nullable)url withExtension:(NSString *_Nullable)fileExtension withDownloadPath:(NSString *)tempDownloadPath withProgress:(void(^_Nullable)(long long totalUnit, long long completedUnit))progressBlock withCompletion:(void (^_Nullable)(NSURL *_Nullable filePath, NSError *_Nullable error))completionBlock;


#pragma mark - helper
/**
 计算文件大小

 @return return value description
 */
- (NSUInteger)getCacheSize;

/**
 清除缓存
 */
- (void)clearCache;

/// 返回远程url对应的下载本地路径 如果找不到则为nil
/// @param url 文件链接地址
/// @param fileExtension 指定的文件扩展名
- (NSString *_Nullable)localPathFromUrl:(NSString *)url withExtension:(NSString *_Nullable)fileExtension;

@end


NS_ASSUME_NONNULL_END
